Method, system and apparatus for self-driving vehicle obstacle avoidance

ABSTRACT

A system for path control for a mobile unmanned vehicle in an environment is provided. The system includes: a sensor connected to the mobile unmanned vehicle; the mobile unmanned vehicle configured to initiate a first fail-safe routine responsive to detection of an object in a first sensor region adjacent to the sensor; and a processor connected to the mobile unmanned vehicle. The processor is configured to: generate a current path based on a map of the environment; based on the current path, issue velocity commands to cause the mobile unmanned vehicle to execute the current path; responsive to detection of an obstacle in a second sensor region, initiate a second fail-safe routine in the mobile unmanned vehicle to avoid entry of the obstacle into the first sensor region and initiation of the first fail-safe routine.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/906,654, filed Feb. 27, 2018, and entitled METHOD, SYSTEM ANDAPPARATUS FOR SELF-DRIVING VEHICLE OBSTACLE AVOIDANCE, which is acontinuation of U.S. patent application Ser. No. 15/164,280, filed 25May 2016, and entitled “METHOD, SYSTEM AND APPARATUS FOR PATH CONTROL INUNMANNED VEHICLES”, which claims the benefit of priority from U.S.Provisional Patent Application No. 62/168,532, filed 29 May 2015 andentitled “METHOD, SYSTEM AND APPARATUS FOR PATH CONTROL IN UNMANNEDVEHICLES”. The contents of each of the foregoing are hereby incorporatedby reference.

FIELD

The specification relates generally to mobile unmanned vehicles, andspecifically to a method, system and apparatus for path control in suchunmanned vehicles.

BACKGROUND

Mobile unmanned vehicles operate in a variety of environments, which maycontain obstacles, including equipment, human personnel and the like.Unmanned vehicles are therefore often equipped with safety sensors, suchas proximity sensors; when an object trips the vehicle's proximitysensor, the vehicle can trigger a fail-safe routine. The fail-saferoutine may be, for example, a emergency stop, in which the vehicleimmediately ceases all movement. In the event of such an emergency stop,however, the vehicle may require a manual override by a human operatorto resume operation. Current safety mechanisms, such as emergency stops,can therefore be time-consuming and inefficient.

SUMMARY

In general, the specification is directed to systems, methods andapparatuses for path control in self-driving vehicles, also referred toas mobile unmanned vehicles. One or both of a self-driving vehicle and acomputing device connected to the self-driving vehicle via a network canset sensor regions adjacent to the vehicle, and monitor those regionsfor obstacles. Upon detection of an obstacle within the larger of thetwo regions, the vehicle can initiate a redirection routine to generatea path around the obstacle. During the computation of such a path, thevehicle can reduce its velocity to reduce the likelihood of the obstacleentering the smaller of the two regions. If an obstacle is detected withthe smaller region, the vehicle initiates an emergency stop routine.

According to an aspect of the specification, a system for path controlfor a mobile unmanned vehicle in an environment is provided, comprising:a sensor connected to the mobile unmanned vehicle; the mobile unmannedvehicle configured to initiate a first fail-safe routine responsive todetection of an object in a first sensor region adjacent to the sensor;and a processor connected to the mobile unmanned vehicle, the processorconfigured to: generate a current path based on a map of theenvironment; based on the current path, issue velocity commands to causethe mobile unmanned vehicle to execute the current path; responsive todetection of an obstacle in a second sensor region, initiate a secondfail-safe routine in the mobile unmanned vehicle to avoid entry of theobstacle into the first sensor region and initiation of the firstfail-safe routine.

BRIEF DESCRIPTIONS OF THE DRAWINGS

Embodiments are described with reference to the following figures, inwhich:

FIG. 1 depicts a system for controlling unmanned vehicles, according toa non-limiting embodiment;

FIG. 2 depicts certain components of the unmanned vehicle of the systemof FIG. 1, according to a non-limiting embodiment;

FIG. 3 depicts certain internal components of the computing device ofthe system of FIG. 1, according to a non-limiting embodiment;

FIG. 4 depicts a method for path control in the system of FIG. 1,according to a non-limiting embodiment;

FIG. 5 depicts a path generated in the performance of the method of FIG.4, according to a non-limiting embodiment;

FIG. 6 depicts the partial execution of the path of FIG. 5, anddetection of an obstacle, according to a non-limiting embodiment;

FIG. 7 depicts a second fail-safe routine performed in response todetection of the obstacle of FIG. 6, according to a non-limitingembodiment; and

FIG. 8 depicts a further path generated in the performance of the methodof FIG. 4, according to a non-limiting embodiment.

DETAILED DESCRIPTION OF THE EMBODIMENTS

FIG. 1 depicts a system 100 including at least one of self-drivingvehicle, also referred to as a mobile unmanned vehicle 104, fordeployment in a facility 106. A plurality of unmanned vehicles 104 canbe provided in system 100, having a wide variety of operationalcharacteristics (e.g. maximum payload, dimensions, weight, maximumspeed, battery life, and the like). Facility 106 can include any one of,or any suitable combination of, a single building, a combination ofbuildings, an outdoor area, and the like.

System 100 also includes a computing device 108 for connection tounmanned vehicle 104 via a network 112. Computing device 108 can beconnected to network 112 via, for example, a wired link 113, althoughwired link 113 can be any suitable combination of wired and wirelesslinks in other embodiments. Unmanned vehicle 104 can be connected tonetwork 112 via a wireless link 114. Link 114 can be any suitablecombination of wired and wireless links in other examples, althoughgenerally a wireless link is preferable to reduce or eliminate obstaclesto the free movement of unmanned vehicle 104 about facility 106. Network112 can be any suitable one of, or any suitable combination of, wiredand wireless networks, including local area networks (LAN or WLAN), widearea networks (WAN) such as the Internet, and mobile networks (e.g. GSM,LTE and the like). Although computing device 108 is illustrated in FIG.1 as being outside facility 106, in some embodiments computing device108 can be located within facility 106.

Computing device 108 can control unmanned vehicle 104, for example byassigning tasks to unmanned vehicle 104. The nature of such tasks is notparticularly limited. For example, computing device 108 can instructvehicle 104 to proceed to a specified location within facility 106, orto generate a map of facility 106, or a portion thereof (e.g. whenfacility 106 is a previously unmapped area).

In response to receiving an instruction from computing device 108,vehicle 104 is configured to generate a path representing a combinationof vectors and associated locations, leading from the current locationof vehicle 104 in order to complete the task contained in theinstruction. That is, for each of a set of locations, the path specifiesthat the vehicle is to travel in a certain direction until the nextlocation is reached. In some embodiments, computing device 108 isconfigured to assist vehicle 104 in generating the path, or can beconfigured to generate the path entirely and transmit the generated pathto vehicle 104.

Once in possession of the path mentioned above, vehicle 104 isconfigured to execute the path by controlling motors and the like toimplement the vectors specified by the path at their correspondinglocations (e.g. implement the first vector, associated with the startinglocation of vehicle 104, until the second location in the path isreached, at which point vehicle 104 implements the second vector,associated with that second location).

Facility 106 can contain obstacles 116, two examples of which are shownin FIG. 1. As will now be apparent to those skilled in the art, the pathmentioned above preferably routes vehicle 104 around obstacles 116 toavoid collisions. For example, the generation of the path can be basedon map data that defines the locations and dimensions of obstacles 116.Such map data can be created previously and stored at vehicle 104 orcomputing device 108 (or both). In some embodiments, the map data can becaptured by vehicle 104 via various sensors configured to detectobstacles 116.

In some situations, however, one or more of obstacles is not accountedfor by the above-mentioned map data (e.g. the map is incomplete). Inaddition, it is possible for some obstacles, such as other vehicles,human operators and the like, to move, thus rendering their indicatedpositions in the map (if they were represented in the map) inaccurate.As will be discussed in greater detail below, vehicle 104 is configuredto perform various actions to reduce or eliminate the likelihood ofcollisions with objects not accounted for in the path, while alsoreducing or eliminating interruptions in the completion of vehicle 104'stasks.

Before describing the path control actions implemented by vehicle 104,certain components of vehicle 104, as well as certain internalcomponents of computing device 108, will be described.

Referring now to FIG. 2, an example implementation of mobile unmannedvehicle 104 is shown. Vehicle 104 is depicted as a terrestrial vehicle,although it is contemplated that vehicle 104 (or any other unmannedvehicle deployed within facility 106) can also include aerial vehiclesand watercraft. Vehicle 104 includes a chassis 200 containing orotherwise supporting various other components, including one or morelocomotive devices 204. Devices 204 in the present example are wheels,although in other embodiments any suitable locomotive device, orcombination thereof, may be employed (e.g. tracks, propellers, and thelike).

Locomotive devices 204 are powered by one or more motors (not shown)contained within chassis 200. The motors of unmanned vehicle 104 can beelectric motors, internal combustion engines, or any other suitablemotor or combination of motors. In general, the motors drive thelocomotive devices 204 by drawing power from an energy storage device(not shown) supported on or within chassis 200. The nature of the energystorage device can vary based on the nature of the motors. For example,the energy storage can include batteries, combustible fuel tanks, or anysuitable combination thereof.

Unmanned vehicle 104 also includes a load-bearing surface 208 (alsoreferred to as a payload surface), for carrying one or more items. Insome examples, payload surface 208 can be replaced or supplemented withother payload-bearing equipment, such as a cradle, a manipulator arm, orthe like. In still other examples, payload surface 208, as well as anyother payload-bearing equipment, can be omitted.

Vehicle 104 can also include a variety of sensors. For example, vehicle104 can include at least one load cell 212 coupled to payload surface208, for measuring a force exerted on payload surface 208 (e.g. by anitem being carried by vehicle 104). Unmanned vehicle 104 can alsoinclude a location sensor (not shown) such as a GPS sensor, fordetecting the location of unmanned vehicle 104 with respect to a frameof reference. The frame of reference is not particularly limited, andmay be, for example, a global frame of reference (e.g. GPS coordinates),or a facility-specific frame of reference. Other sensors that can beprovided with unmanned vehicle 104 include accelerometers, fuel-level orbattery-level sensors, and the like.

Vehicle 104 also includes at least one machine vision sensor 216 fordetecting objects in the surroundings of vehicle 104. For example,vehicle 104 can include any suitable one of, or any suitable combinationof, laser-based sensing devices (e.g. a LIDAR sensor), cameras and thelike. In other embodiments, sonar-based sensors may be employed insteadof, or in addition to, optical devices (that is, “machine vision” isused herein in a broad sense to denote sensors that permit vehicle 104to sense physical features of its environment). A particular example ofsensor 216 is a safety sensor such as the S3000 laser scanner by SickAG. The actions performed by vehicle 104, described below, may beperformed using a single sensor, or a plurality of sensors.

Unmanned vehicle 104 can also include a control panel 220, as well asanchors 224 for securing items or other equipment to chassis 200, or forlifting chassis 200 (e.g. for maintenance). Unmanned vehicle 104 canalso include any of a variety of other features, such as indicatorlights 228.

In addition, unmanned vehicle 104 includes a central processing unit(CPU) 250, also referred to as a processor 250, interconnected with anon-transitory computer-readable medium such as a memory 254. Processor250 and memory 254 are generally comprised of one or more integratedcircuits (ICs), and can have a variety of structures, as will now occurto those skilled in the art (for example, more than one CPU can beprovided). Memory 254 can be any suitable combination of volatile (e.g.Random Access Memory (“RAM”)) and non-volatile (e.g. read only memory(“ROM”), Electrically Erasable Programmable Read Only Memory (“EEPROM”),flash memory, magnetic computer storage device, or optical disc) memory.

Unmanned vehicle 104 also includes a communications interface 258 (e.g.a network interface controller or NIC) interconnected with processor250. Via communications interface 258, link 114 and network 112,processor 250 can send and receive data to and from computing device108. For example, unmanned vehicle 104 can send updated location data tocomputing device 108, and receive task instructions from computingdevice 108.

Additionally, processor 250 is interconnected with the other componentsof unmanned vehicle 104 mentioned above, such as sensors 212 and 216 andcontrol panel 220.

Memory 254 stores a plurality of computer-readable programminginstructions, executable by processor 250, in the form of variousapplications, including a vehicle control application 262. As will beunderstood by those skilled in the art, processor 250 can execute theinstructions of application 262 (and any other suitable applicationsstored in memory 254) in order to perform various actions defined withinthe instructions. In the description below processor 250, and moregenerally vehicle 104, is said to be “configured to” perform certainactions. It will be understood that vehicle 104 is so configured via theexecution of the instructions of the applications stored in memory 254.

Turning now to FIG. 3, certain internal components of computing device108 are illustrated. Computing device 108 can be any one of, or anycombination of, a variety of computing devices. Such devices includedesktop computers, servers, mobile computers such as laptops and tabletcomputers, and the like. Computing device 108 therefore includes atleast one central processing unit (CPU), also referred to herein as aprocessor, 300. Processor 300 is interconnected with a non-transitorycomputer-readable medium such as a memory 304. Processor 300 is alsointerconnected with a communications interface 308.

Processor 300 and memory 304 are generally comprised of one or moreintegrated circuits (ICs), and can have a variety of structures, as willnow occur to those skilled in the art (for example, more than one CPUcan be provided). Memory 304 can be any suitable combination of volatile(e.g. Random Access Memory (“RAM”)) and non-volatile (e.g. read onlymemory (“ROM”), Electrically Erasable Programmable Read Only Memory(“EEPROM”), flash memory, magnetic computer storage device, or opticaldisc) memory.

Communications interface 308 allows computing device 108 to connect withother computing devices (e.g. unmanned vehicle 104) via network 112.Communications interface 308 therefore includes any necessary hardware(e.g. network interface controllers (NICs), radio units, and the like)to communicate with network 112 over link 113. Computing device 108 canalso include input and output devices, such as keyboards, mice,displays, and the like (not shown).

Memory 304 stores a plurality of computer-readable programminginstructions, executable by processor 300, in the form of variousapplications. As will be understood by those skilled in the art,processor 300 can execute the instructions of such applications in orderto perform various actions defined within the instructions. In thedescription below processor 300, and more generally computing device108, are said to be “configured to” perform those actions. It will beunderstood that they are so configured via the execution of theinstructions of the applications stored in memory 304.

Turning now to FIG. 4, a method 400 of path control in unmanned vehiclesis illustrated. Method 400 will be described in connection with itsperformance in system 100, although it is contemplated that method 400can also be performed in other systems. More specifically, the blocks ofmethod 400 are performed by vehicle 104, via the execution ofapplication 262 by processor 250, in conjunction with the othercomponents of vehicle 104.

Beginning at block 405, vehicle 104 is configured to obtain a map offacility 106 (or a portion thereof) and generate a path. The generationof a path may be performed in response to the receipt of an instructionto perform a task at vehicle 104 from computing device 108, for example.Obtaining a map can be performed in a variety of ways. For example,vehicle 104 can send a request to computing device 108 via network 112for a map (stored in memory 304). In another example, vehicle 104 canstore a map of facility 106 in memory 254, and thus obtaining the map atblock 405 includes retrieving the map from memory 254. In a furtherexample, obtaining a map can include generating a map based on sensordata received at processor 250 from sensor 216. That is, vehicle 104 canbe configured to construct a map of its surroundings using sensor 216,and generate a path based on that map.

In general, to generate a path at block 405, vehicle 104 (and morespecifically, processor 250) generates one or more direction indicators,each corresponding to a location within the map. Each directionindicator defines a direction of travel to be implemented by vehicle 104when vehicle 104 reaches the location corresponding to that directionindicator. As will now be apparent to those skilled in the art, vehicle104 is configured to monitor its current location within the map.Vehicle 104 can therefore determine when it has reached the startinglocation for the next segment of the path, and in response can controllocomotive devices 204 to travel in the direction specified by the pathfor that segment.

Turning to FIG. 5, an example path 500 is depicted as a plurality ofsegments, each indicating a different direction in which vehicle 104will travel. Sample future locations of vehicle 104 (as vehicle 104travels along path 500) are also shown, in dotted lines. As seen in FIG.5, path 500 routes vehicle 104 between two obstacles 504 and 508 toarrive at a target location 512. For example, target location 512 mayhave been supplied to vehicle 104 by computing device 108, and obstacles504 and 508 can be represented in a map either also supplied bycomputing device 108, or constructed by vehicle 104 using data fromsensor 216.

Returning to FIG. 4, at block 410, vehicle 104 is configured to executethe path generated at block 405. In general, path execution includesselecting a segment (that is, a direction indication and correspondingstarting location for the segment, as mentioned above) in the path, andcontrolling locomotive devices 204 and associated components (such asmotors) to travel in the direction defined by the direction indicationfor that segment. Path execution begins by selecting the first segment,and continues by repeating the above process for subsequent nodes. Eachtime the starting location for the next segment in the path is reached,vehicle 104 sets a direction of travel (by controlling locomotivedevices 204) based on the direction indication for that next segment,until vehicle 104 reaches a location corresponding to the subsequentsegment in the path.

Executing the path at block 410 also includes setting a speed of travelfor each segment of the path, in addition to a direction. In someembodiments, the speed can be set during path generation and thereforespecified directly in the path (with each segment of the path thus beingdefined by a location, a direction and a speed). In the present example,however, the speed is set dynamically by vehicle 104 during pathexecution. Speed of travel can be set in a variety of ways. For example,vehicle 104 may simply select the maximum speed of which vehicle 104 iscapable. In other examples, vehicle 104 can apply restrictions (such asspeed limits) stored in memory 254 to the speed selected. In furtherexamples, vehicle 104 can vary the speed based on operational parametersthat are required to conform with the path. For example, when the pathrequires vehicle 104 to make a turn, vehicle 104 may be configured toselect a lower speed for the duration of the turn. As a further example,vehicle 104 may be configured to select the speed and direction toreturn to the current path, when the current position or velocity (orboth) of vehicle 104 indicate that vehicle 104 is not on the currentpath.

In some embodiments, setting a speed includes setting a target speedvalue (e.g. fifteen kilometres per hour). Processor 250 can receivemeasurements of the current speed of vehicle 104 from sensors (notshown), and adjust control parameters, such as motor power provided tolocomotive devices 204, until the target speed is reached. In otherembodiments, setting a speed at block 410 can include not setting anactual target speed value, but rather setting control parameters such asmotor power (e.g. as a percentage of maximum motor power).

More generally, processor 250 is configured to execute path 410 bygenerating and issuing successive velocity commands for each segment ofthe path generated at block 405. Each velocity command includes adirection of travel and a speed of travel (either in the form of atarget speed or related control parameters). Processor 250, or otherdevices within vehicle 104 (such as controllers connected to locomotivedevices 204), are configured to convert the velocity commands intocontrol inputs to locomotive devices 204 in order to carry out thevelocity commands.

At block 415, during the execution of the path generated at block 405,vehicle 104 is configured to set first and second sensor regions. Aswill be apparent in the description below, the sensor regions are set inparallel with the execution of the path, since the nature of the sensorregions depends on the velocity commands generated by processor 250during path execution.

The first and second sensor regions are employed by processor 250 toinitiate respective first and second fail-safe routines in vehicle 104.Machine vision sensors such as sensor 216 provide processor 250 withdata defining distances between vehicle 104 and objects in the vicinityof vehicle 104. Such distances can be defined as distances from sensor216 itself, or sensor 216 can process the data to generate distancesfrom the center of mass of vehicle 104 or any other portion of vehicle104. The above-mentioned sensor regions are effectively distancethresholds that processor 250 can apply to the data received from sensor216 in order to initiate the above-mentioned fail-safe routines.

As will be discussed below, when an object is detected (either byprocessor 250, within the first sensor region in the data received fromsensor 216, or by sensor 216 itself), processor 250 or sensor 216triggers a first fail-safe routine, also referred to as a shutdown oremergency stop routine. In the first fail-safe routine, vehicle 104 isbrought to a halt and resumes operation only after an overrideinstruction is received (e.g. from a human operator). On the other hand,when processor 250 detects, within the data received from sensor 216, anobject within the second sensor region, processor 250 triggers a secondroutine, also referred to herein as a second fail-safe routine (althoughthe second fail-safe routine need not include any redundancy or otherfail-safe features) that does not bring vehicle 104 to an emergencystop, but rather adjusts the operation of vehicle 104 to reduce thelikelihood of an emergency stop being triggered.

The first and second sensor regions are defined at least by a rangeparameter, indicating a distance from sensor 216 or any other suitableportion of vehicle 104. For each sensor region, processor 250 takes noaction when objects are detected outside the set range in the datareceived from sensor 216, and does take action when objects are detectedwithin that range. Sensor regions can also be defined by additionalparameters, such as angles, coordinates and the like to define fields ofview; thus, sensor regions can be areas (two-dimensional regions), orvolumes (three-dimensional regions). The above-mentioned range parametercan also vary with direction, such that the sensor regions are shaped,for example to be larger in a forward direction than in sidewaysdirections.

Processor 250 is configured to set the range of the first sensor regionto provide sufficient time for vehicle 104 to come to a halt beforecolliding with an object detected within the first sensor region. Thus,the range for the first sensor region is selected based on the stoppingdistance of vehicle 104, and preferably is greater than the stoppingdistance of vehicle 104. Processor 250 is configured to set a range forthe second sensor region that is greater than the range of the firstsensor region. For example, the second sensor region can be set as apredetermined multiple of the stopping distance of vehicle 104 (e.g.twice the stopping distance), or as the stopping distance supplementedwith a distance that vehicle 104 will travel in a predetermined amountof time at its current speed. In other embodiments, the second sensorregion can be set as a predetermined multiple of the first sensorregion.

It is clear from the above that the range of each sensor region (and anyother parameters of the sensor regions) are set based on the speed ofvehicle 104 (both translational and rotational speed can be considered).Processor 250 can receive measurements of the current speed of vehicle104 from sensors (e.g. sensors coupled to locomotive devices 204, orlocation sensors such as GPS sensors). From a measurement of vehiclespeed, processor 250 determines a stopping distance for vehicle 104, andsets the first sensor region accordingly. Processor 250 also sets thesecond sensor region based on the measured speed, as noted above.

Referring to FIG. 5, an example first sensor region 516, and an examplesecond sensor region 520, are illustrated. In the present example,sensor regions 516 and 520 are biased in the direction of forward travelof vehicle 104; in other embodiments, various other shapes can beemployed for the sensor regions.

In some embodiments, rather than selecting parameters for sensorregions, processor 250 can instead instruct sensor 216 (or any othersensors employed to implement the sensor region) to operate in one of aplurality of discrete sensing modes. For example, sensor 216 can beconfigured to operate in three modes, each with a different fixed rangewithin which objects will be reported to processor 250 (objects outsidethe range may be detected by sensor 216, but sensor 216 may not notifyprocessor 250 of those objects). Processor 250 can therefore select anoperating mode based on the current speed of vehicle 104, and send aninstruction to sensor 216 to operate in that mode.

Returning to FIG. 4 and proceeding to block 420, during path execution,processor 250 is configured to receive data from sensor 216 (e.g.indicating distances from sensor 216 to any objects visible to sensor216), and to determine from the received data whether an object isdetected within the first sensor region. The determination at block 420can be, for example, whether a distance reading received from sensor 216is smaller than the range of the first sensor region as set at block415. In other embodiments, the determination at block 420 can be madebased on the map. For example, vehicle 104 may update the map withobjects detected by sensor 216 during path execution, and thedetermination at block 420 can therefore be based on the map rather thandirectly on the sensor data. In further embodiments, sensor 216 mayimplement the first sensor region by operating in a mode in which onlyobjects within the first sensor region are even reported to processor250. Thus, the determination at block 420 can also include simplydetermining whether any data has been received from sensor 216 inconnection with the first sensor region. When the determination isaffirmative, performance of method 400 proceeds to block 425.

At block 425, processor 250 initiates the first fail-safe routine, inthe form of an emergency stop, in which vehicle 104 is brought to a haltvia control of locomotive devices 204 overriding any previous velocitycommand. Performance of method 400 is then terminated. Referring brieflyto FIG. 5, it is clear that at the beginning of path execution, noobjects will be detected within first sensor region 516.

In some embodiments, blocks 420 and 425 can be performed by a separatesubsystem of vehicle 104 instead of processor 250, such as asafety-rated (e.g. redundant) subsystem configured to respond to objectdetections by sensor 216. Such a subsystem can be included within sensor216 itself, and thus sensor 216 can perform block 420 directly andeffectively override the control of vehicle 104 by processor 250 when anobject is detected within the first sensor region. In such embodiments,block 415 can also be performed in part by the subsystem. For example,the subsystem can set the first sensor region, while processor 250 canset the second sensor region.

When the determination at block 420 is negative, however, vehicle 104proceeds to block 430. At block 430, vehicle 104 determines whether anobject is detected within the (larger) second sensor region. Thedetermination at block 430 is similar to the determination at block 420,in that processor 250 is configured to determine whether any datareceived from sensor 216 indicates the presence of an object at a rangesmaller than the range of the second sensor region. In FIG. 5, it can beseen that no objects will be detected within the second sensor region520 at vehicle 104's current position. When the determination at block430 is negative, performance of method 400 returns to block 410. Thatis, path execution (and any adjustments to the sensor regions based onchanging speed of travel) continues.

When the determination at block 430 is affirmative, however, theperformance of method 400 proceeds to block 435. Turning to FIG. 6,vehicle 104 is shown to have completed execution of a portion of path500. In FIG. 6, however, an additional obstacle 600 is present. Obstacle600 may be a moveable object that was not in its present location whenpath 500 was generated. Obstacle 600 may also be an object that,although stationary, was simply not accounted for in the map employed togenerate block 500. For example, if the map was obtained by vehicle 104in its initial position shown in FIG. 5, obstacle 600 may have beeninitially obscured from view by obstacle 504.

As seen in FIG. 6, a portion of obstacle 600 is within second sensorregion 520, leading to an affirmative determination at block 430. Thepresence of obstacle 600 in second sensor region 520 indicates thatthere is a risk that obstacle 600 could enter first sensor region 516and trigger an emergency stop in vehicle 104. Returning to FIG. 4, atblock 435 vehicle 104 is configured to take various actions to reduce oreliminate that risk. These actions, in general, correspond to the secondfail-safe routine mentioned earlier.

At block 435, vehicle 104 is configured to initiate a path regeneration,taking into account the object detected at block 430. The pathregeneration process initiated at block 435 is similar to the pathgeneration at block 405, with the exception that the newly detectedobstacle (obstacle 600, in the example shown in FIG. 6) is accountedfor.

The generation of a path can be computationally intensive, and maytherefore not be ready immediately. Further, in some instances a newpath may not be possible to generate. That is, the obstacle detected atblock 430 may prevent any path to the original target location frombeing generated. In order to reduce interruptions to the operation ofvehicle 104 (that is, in completing the task of travelling to targetlocation 512), while also reducing or eliminating the risk of collidingwith obstacle 600 (which, as is evident from FIG. 6, would occur ifvehicle 104 continued along path 500), vehicle 104 is thereforeconfigured to perform additional actions as part of the second fail-saferoutine.

In particular, at block 440, processor 250 is configured to determinewhether the path whose generation was initiated at block 435 iscomplete. When the determination at block 440 is affirmative, theperformance of method 400 proceeds to block 445, at which the new pathis set as the current path (superseding the path generated at block405). Performance of method 400 then resumes at block 410, as describedabove (with the new path rather than the original path).

When, however, the determination at block 440 is negative, indicatingthat the new path is not yet ready, performance of method 400 proceedsto block 450. At block 450, processor 250 is configured to maintain thecurrent path but to adjust the velocity of vehicle 104. In other words,at block 450 processor 250 continues to execute the current path in asimilar manner to that described above in connection with block 410.However, at block 450 processor 250 sets the speed of vehicle 104differently than at block 410.

Specifically, at block 450, processor 250 is configured to set a speedthat reduces the size of second sensor region 520 sufficiently for theobstacle detected at block 430 (obstacle 600, in the present example) tono longer fall within second sensor region 520. Processor 250 cantherefore, as part of the performance of block 450, set a speed andsimulate the setting of sensor regions by generating a simulated secondsensor region based on the new speed. Processor 250 can then determinewhether obstacle 600 would still fall within the simulated second sensorregion. If so, processor 250 can select a lower speed and repeat thesimulation until a speed is arrived at that results in a sufficientlysmall second sensor region.

Having performed block 450, vehicle 104 then returns to block 415 to setfirst and second sensor regions based on the path execution (withadjusted speed) performed at block 450. Referring to FIG. 7, first andsecond sensor regions 716 and 720 are shown to have replaced sensorregions 516 and 520. As will now be apparent, the reduction in vehiclespeed designed to reduce the range of sensor region 720 also causes areduction in range of sensor region 716, as both sensor regions arebased in part on vehicle speed. As seen in FIG. 7, obstacle 600 is nolonger within sensor region 720.

Setting the new sensor regions at block 415 can include, as notedearlier, instructing sensor 216 to enter one of a plurality of discretemodes. In some embodiments, sensor 216 maintains speed envelopes (e.g.an upper and lower bound, or an upper bound only) in association witheach mode, and does not allow its operation to switch to a given modeunless the speed of vehicle 104 is within the envelope. In suchembodiments, having set a target speed at block 450, processor 450 canbe configured to wait until the target speed has been reached beforeperforming block 415 to ensure that the instruction to switch sensormodes is not refused.

Upon completion of block 415, vehicle 104 is configured to continueperforming the remainder of method 400 as described above. As will nowbe apparent to those skilled in the art, if obstacle 600 is stationary,and if no new path becomes available, vehicle 104 may again approachobstacle 600 such that obstacle 600 falls within second sensor region720. In such an event, the performance of method 400 would lead to afurther reduction in vehicle speed, to further reduce the range of thesensor regions. In some cases, the speed of vehicle 104 may be reducedto zero while the generation of a new path proceeds. Reducing vehiclespeed to zero presents an interruption in the operation of vehicle 104,but because the first fail-safe routine (i.e. emergency stop) has notoccurred, resuming operation is still relatively straightforward, inthat when the new path is available (or the obstacle detected at block430 moves away), path execution at block 410 can resume, generallyleading to an increase in vehicle speed.

As mentioned above, sensor 216 may have discrete sensor modes forimplementing the first sensor region. It is contemplated that whenvehicle speed is reduced below a certain extent, sensor 216 may not havea mode with a range short enough to correspond to the speed of vehicle104. In such embodiments, processor 250 can instruct sensor 216 todisable the first sensor region, or to switch to a docking mode in whichcollision warnings (i.e. performances of blocks 420 and 425) aresuppressed.

When, at any point during the performance of method 400 after block 435has been performed, the new path becomes available, the new pathsupersedes the current path, and the performance of method 400 resumesat block 410. Referring now to FIG. 8, a new path 800 is illustratedtowards target location 512, that diverges from path 500 and routesvehicle 104 around obstacle 600. Via the execution of path 800, vehicle104 may therefore arrive at target location 512 without having performedan emergency stop.

Variations to the above system and method are contemplated, in additionto those already mentioned. For example, in some embodiments, portionsof method 400 can be performed by computing device 108 instead ofvehicle 104. For example, path generation at blocks 405 and 435 can beperformed by computing device 108, with the results of the pathgeneration being sent to vehicle 104. In further embodiments, computingdevice 108 can simply send velocity commands to vehicle 104 rather thanthe path. In other words, computing device 108 can also perform blocks410 and 450 (partially).

In further variations, the second sensor region described above may beimplemented in various ways. For example, rather than setting a rangewithin which detected obstacles will trigger the second fail-saferoutine discussed above, processor 250 (or processor 300 of computingdevice 108) can generate predictions of the position of vehicle 104 inthe future. Such predictions can be based on the path, the current speedof the vehicle and the associated stopping distance of the vehicle.

In other embodiments, the predictions can be based on the currentcontrol inputs provided to locomotive devices 204 and the knownbehaviour of locomotive devices 204 in response to such inputs (e.g. thedynamics of locomotive devices 204). Having generated a predictedposition for vehicle 104 at a predetermined future time (e.g. threeseconds in the future), processor 250 can then be configured todetermine whether, in the predicted position, any obstacles will bewithin the first sensor region.

Effectively, in the above variations the second sensor region isreplaced with a prediction of the future position of vehicle 104, whichcan include the entire path or a predicted future position of vehicle104. Such predictions can also take into account the movement ofobstacles, therefore generating a prediction not only of the futureposition of vehicle 104, but also a future position of an obstacle basedon the current observed (e.g. via sensor 216) motion of the obstacle.The predictions of the obstacle and vehicle 104 can then be compared todetermine whether the obstacle is expected to intersect with the firstsensor region of vehicle 104.

In further variations, setting sensor regions can also include directingor steering sensor 216, when sensor 216 is moveable in relation tovehicle 104. For example, when vehicle 104 executes a turn towards thedirection of the next segment in the path, sensor 216 can be steered inthe same direction as the turn.

The scope of the claims should not be limited by the embodiments setforth in the above examples, but should be given the broadestinterpretation consistent with the description as a whole.

1.-20. (canceled)
 21. A method for obstacle avoidance for a self-drivingvehicle in an environment, the method comprising: operating, by aprocessor of the self-driving vehicle, the vehicle to autonomouslynavigate the environment, the processor being in communication with oneor more sensors mounted to the self-driving vehicle; defining, by theprocessor, a first sensor region and a second sensor region for at leastone sensor of the one or more sensors, the at least one sensor beingconfigured to detect an object in the first or second sensor regions,wherein the second sensor region has a greater range than the firstsensor region; determining, by the processor, that the vehicle isturning along a turn direction; in response to determining that thevehicle is turning along the turn direction, adjusting, by theprocessor, an orientation of at least the first sensor region to followthe turn direction while the vehicle is turning; based on sensor datagenerated by the at least one sensor, detecting, by the processor, anobject in at least one of the first or second sensor regions; and inresponse to detecting the object in at least one of the first or secondsensor regions, adjusting, by the processor, an operation of theself-driving vehicle to reduce a risk of colliding with the object. 22.The method of claim 22, wherein adjusting, by the processor, anorientation of at least the first sensor region further comprises atleast one of: maintaining constant the orientation of the second sensorregion, or adjusting the orientation of the second sensor region tofollow the turn direction.
 23. The method of claim 21, wherein the firstand second sensor regions correspond to a detection range of the atleast one sensor.
 24. The method of claim 21, wherein at least onesensor of the one or more sensors is configured to measure rotationalvelocity data for the vehicle, the method comprising: receiving, by theprocessor from the second sensor, rotational velocity data for thevehicle; based on the rotational velocity data, determining, by theprocessor, that the vehicle is turning along the turn direction; and inresponse, adjusting, by the processor, the orientation of at least thefirst sensor region to correspond to the rotational velocity data. 25.The method of claim 21, wherein the processor operates the vehicle tofollow a vehicle trajectory, the vehicle trajectory comprising aplurality of segments each defining a portion of the vehicle trajectoryand having a corresponding segment-specific vehicle travel direction,the method further comprising: determining, by the processor, a currentlocation of the vehicle along the vehicle trajectory; identifying, bythe processor, a current segment corresponding to the current locationof the vehicle; determining, by the processor, a next segment along thevehicle trajectory that is subsequent to the current segment; anddetermining, by the processor, that the vehicle is turning based on thesegment-specific travel directions for the current segment and the nextsegment.
 26. The method of claim 25, further comprising: accessing, bythe processor, a map of the environment, wherein the map includesinformation for the plurality of segments and the segment-specifictravel directions; and determining, by the processor, the currentsegment and the next segment based on the map and the current locationof the vehicle.
 27. The method of claim 26, wherein the map is stored ona memory coupled to the processor.
 28. The method of claim 21, whereinat least one sensor of the one or more sensors is configured to measurevehicle speed, and the method further comprises: receiving, by theprocessor from the second sensor, a vehicle speed; and adjusting, by theprocessor, a range of at least one of the first and second sensorregions based on the vehicle speed.
 29. The method of claim 25, whereineach of the plurality of segments include corresponding segment-specificvehicle speed, and the method further comprises: determining, by theprocessor, a current location of the vehicle along the vehicletrajectory; identifying, by the processor, a segment corresponding tothe current location of the vehicle; determining a segment-specificvehicle speed which corresponds to the identified segment; and adjustinga range of at least one of the first and second sensor regions based onthe segment-specific vehicle speed.
 30. The method of claim 21, furthercomprising: detecting, by the processor, an object in at least one ofthe first and second sensor regions; and in response to detecting theobject in the first sensor region, triggering, by the processor, anemergency stop to avoid collision with the object; otherwise, inresponse to detecting the object in the second sensor region,generating, by the processor, a vehicle trajectory to avoid the objectand operating, by the processor, the vehicle to follow the vehicletrajectory.
 31. A system for self-driving vehicle obstacle avoidance inan environment, the system comprising: a processor connected to theself-driving vehicle; one or more sensors mounted to the self-drivingvehicle and in communication with the processor, at least one sensor ofthe one or more sensors being configured to detect an object; theprocessor being configured to: operate the self-driving vehicle toautonomously navigate the environment; define a first sensor region anda second sensor region for the at least one sensor, wherein the secondsensor region has a greater range than the first sensor region;determine that the vehicle is turning along a turn direction; inresponse to determining that the vehicle is turning along the turndirection, adjust an orientation of at least the first sensor region tofollow the turn direction while the vehicle is turning; detect, based onsensor data generated by the at least one sensor, an object in at leastone of the first or second sensor regions; and in response to detectingthe object in at least one of the first or second sensor regions, adjustan operation of the self-driving vehicle to reduce a risk of collidingwith the object.
 32. The system of claim 31, wherein adjusting anorientation of at least the first sensor region further comprises atleast one of: maintain constant the orientation of the second sensorregion, or adjust the orientation of the second sensor region to followthe turn direction.
 33. The system of claim 31, wherein the first andsecond sensor regions correspond to a detection range of the at leastone sensor.
 34. The system of claim 31, wherein at least one sensor ofthe one or more sensors is configured to measure rotational velocitydata for the vehicle, and the processor is further configured to: basedon the rotational velocity data, determine that the vehicle is turningalong the turn direction; and in response, adjust the orientation of atleast the first sensor region to correspond to the rotational velocitydata.
 35. The system of claim 31, wherein the processor is furtherconfigured to: operate the vehicle to follow a vehicle trajectory, thevehicle trajectory comprising a plurality of segments each defining aportion of the vehicle trajectory and having a correspondingsegment-specific vehicle travel direction; determine a current locationof the vehicle along the vehicle trajectory; identify a current segmentcorresponding to the current location of the vehicle; determine a nextsegment along the vehicle trajectory that is subsequent to the currentsegment; and determine that the vehicle is turning based on thesegment-specific travel directions for the current segment and the nextsegment.
 36. The system of claim 35, wherein the processor is furtherconfigured to: access a map of the environment, wherein the map includesinformation for the plurality of segments and the segment-specifictravel directions; and determine the current segment and the nextsegment based on the map and the current location of the vehicle. 37.The system of claim 36, wherein the system further comprises a memorycoupled to the processor, and the map is stored on the memory.
 38. Thesystem of claim 31, wherein at least one sensor of the one or moresensors is configured to measure a vehicle speed, and the processor isfurther configured to: adjust a range of at least one of the first andsecond sensor regions based on the vehicle speed.
 39. The system ofclaim 35, wherein each of the plurality of segments includecorresponding segment-specific vehicle speed, and the processor isfurther configured to: determine a current location of the vehicle alongthe vehicle trajectory; identify a segment corresponding to the currentlocation of the vehicle; determine a segment-specific vehicle speedwhich corresponds to the identified segment; and adjust a range of atleast one of the first and second sensor regions based on thesegment-specific vehicle speed.
 40. The system of claim 31, wherein theprocessor is further configured to: detect, based on sensor datagenerated by the at least one sensor, the object in at least one of thefirst and second sensor regions; in response to detecting the object inthe first sensor region, trigger an emergency stop to avoid collisionwith the object; and otherwise, in response to detecting the object inthe second sensor region, generate a vehicle trajectory to avoid theobject and operate the vehicle to follow the vehicle trajectory.